package com.ld.admin.util.daliySentence.impl;

import com.alibaba.fastjson.JSONObject;
import com.ld.admin.util.daliySentence.DaliySentence;
import com.ld.admin.util.daliySentence.DaliySentenceUtil;
import com.ld.admin.util.daliySentence.model.DaliySentenceModel;
import com.ld.shieldsb.common.core.util.JsoupUtil;

/**
 * 
 * 一言
 * 
 * @author <a href="mailto:donggongai@126.com" target="_blank">吕凯</a>
 * @date 2020年1月8日 上午11:00:38
 *
 */
public class DaliySentenceHitokoto implements DaliySentence {
    public static final String KEY = "hitokoto";
    public static final String NAME = "一言";
    public static final String URL = "https://v1.hitokoto.cn/";
    public static final String LINK_URL = "https://hitokoto.cn";
    public static final String DESCRIPTION = "动漫也好、小说也好、网络也好，不论在哪里，我们总会看到有那么一两个句子能穿透你的心。我们把这些句子汇聚起来，形成一言网络，以传递更多的感动。<br>"
            + "简单来说，一言指的就是一句话，可以是动漫中的台词，也可以是网络上的各种小段子。 或是感动，或是开心，有或是单纯的回忆。来到这里，留下你所喜欢的那一句句话，与大家分享，这就是一言存在的目的。"; // 描述

    @Override
    public DaliySentenceModel getSentence() {
        DaliySentenceModel model = null;
        String htmlContent = null;
        JSONObject jsonObj = JsoupUtil.getRemoteURLJson(getURL());
        /*id    本条一言的id。可以链接到https://hitokoto.cn?id=[id]查看这个一言的完整信息。
        hitokoto    一言正文。编码方式unicode。使用utf-8。
        type    类型。请参考第三节参数的表格。
        from    一言的出处。
        creator 添加者。
        created_at  添加时间。
                    注意：如果encode参数为text，那么输出的只有一言正文。*/

        /*        参数名称    类型  描述
        c   可选  Cat，即类型。提交不同的参数代表不同的类别，具体：
                a   Anime - 动画
                b   Comic – 漫画
                c   Game – 游戏
                d   Novel – 小说
                e   Myself – 原创
                f   Internet – 来自网络
                g   Other – 其他
                                            其他不存在参数 任意类型随机取得
        encode  可选
                    text    返回纯净文本
                    json    返回不进行unicode转码的json文本
                    js  返回指定选择器(默认.hitokoto)的同步执行函数。
                                                    其他不存在参数 返回unicode转码的json文本
        charset 可选
        utf-8   返回 UTF-8 编码的内容，支持与异步函数同用。
        gbk 返回 GBK 编码的内容，不支持与异步函数同用。
        callback    可选  回调函数    将返回的内容传参给指定的异步函数。*/
        if (jsonObj != null) {
            model = new DaliySentenceModel();

            String content = jsonObj.getString("hitokoto");
            String origin = jsonObj.getString("from");
            String id = jsonObj.getString("id");

            htmlContent = content + "——" + origin + DaliySentenceUtil.getLinkedStr(getLinkURL(), getName());
            model.setHtmlContent(htmlContent);
            model.setContent(content);
            model.setOrigin(origin);
            model.setBaseInfo(getBaseInfo());
            model.getBaseInfo().setLinkUrl(getLinkURL() + "?id=" + id);
        }
        return model;
    }

    @Override
    public String getKey() {
        return KEY;
    }

    @Override
    public String getName() {
        return NAME;
    }

    @Override
    public String getURL() {
        return URL;
    }

    @Override
    public String getLinkURL() {
        return LINK_URL;
    }

    @Override
    public String getDescription() {
        return DESCRIPTION;
    }

}
